import numpy as np
import pandas as pd


def data_preprocessing(path):
    """
    数据预处理
    :param path: 数据文件路径
    :return: 预处理后的数据
    """
    try:
        # 获取数据
        data = pd.read_csv(path)
        print(f"原始数据形状: {data.shape}")

        # 首先将time列转换为datetime类型
        data['time'] = pd.to_datetime(data['time'], errors='coerce')

        # 检查是否有转换失败的时间
        if data['time'].isnull().any():
            print("警告: 部分时间数据转换失败，删除这些行")
            data = data.dropna(subset=['time'])

        # 格式化日期 (修正时间格式)
        data['time'] = data['time'].dt.strftime('%Y-%m-%d %H:%M:%S')

        # 日期排序 (修正：使用字符串'time')
        data = data.sort_values(by='time')

        # 去重 (需要重新赋值)
        data = data.drop_duplicates()

        print(f"预处理后数据形状: {data.shape}")
        return data

    except Exception as e:
        print(f"数据预处理出错: {e}")
        raise
